package com.liulei.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.liulei.entities.Worker;
import com.liulei.mapper.WorkerMapper;
import com.liulei.service.WorkerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class WorkerServiceImpl implements WorkerService {
    /**
     * 业务逻辑层自动装配WorkerMapper映射器
     * 客户管理业务逻辑接口的实现类
     *  * 被@Service注解修饰的类是接口实现类，SpringBoot启动的时候会自动注入
     * @return
     */
    @Autowired
    private WorkerMapper workerMapper;

    /**
     * 获取所有的送水工信息
     * @return 返回送水工信息
     */

    @Override
    public List<Worker> listWorker() {
        return workerMapper.selectList(null);
    }


    /**
     * 添加送水工信息
     * @param  worker 需要添加的送水工对象
     * @return 受影响行数，大于0添加成功，否则添加失败
     */
    @Override
    public int saveWorker(Worker worker) {
        return workerMapper.insert(worker);
    }


    /**
     * 根据送水工名称搜索满足条件的送水工列表
     * 例如：例如：使用模糊查询，搜索所有包含“老”的送水工信息
     * 步骤：
     * 1 定义QueryWrapper对象
     * 2 定义查询条件
     * 3 调用WorkerMapper对象的selectList方法，将QueryWrapper对象注入到该方法中
     * 4 返回搜索结果
     * @param workerName 搜索的查询条件
     * @return 满足条件的客户列表
     */
    @Override
    public List<Worker> searchWorker(String workerName) {
        QueryWrapper<Worker> qw = new QueryWrapper<>();
        qw.like("worker_name",workerName);
        List<Worker> workerList = workerMapper.selectList(qw);
        return workerList;
    }

    /**
     * 根据客户ID删除送水工信息
     * 步骤：
     * 1 创建QueryWrapper对象
     * 2 设置要删除的条件
     * 3 根据id删除送水工信息，返回受影响行数
     * @param wid 送水工ID
     * @return 受影响行数，大于0删除成功，否则删除失败
     */

    @Override
    public int deleteWorkerById(Integer wid) {
        QueryWrapper<Worker> qw = new QueryWrapper<>();
        qw.eq("wid",wid);
        return workerMapper.delete(qw);
    }


    /**
     * 根据送水工id查询对应的送水工信息   数据回显
     * 步骤：
     * 1 创建QueryWrapper对象
     * 2 设置查询条件
     * 3 调用WorkerMapper对象selectOne方法，并将QueryWrapper对象注入到该方法中，返回送水工信息
     * @param wid 送水工id
     * @return 送水工信息
     */
    @Override
    public Worker getWorkerById(Integer wid) {
        QueryWrapper<Worker> qw = new QueryWrapper<>();
        qw.eq("wid",wid);
        return workerMapper.selectOne(qw);
    }

    /**
     * 修改送水工
     * @param worker 送水工信息
     * @return 受影响行数，大于0修改成功，否则修改失败
     */
    @Override
    public int updateWorker(Worker worker) {
        QueryWrapper<Worker> qw = new QueryWrapper<>();
        qw.eq("wid",worker.getWid());
        return workerMapper.update(worker,qw);
    }

    /**
     * 调整工资
     *
     * @param wid          送水工ID
     * @param workerSalary 送水工工资
     * @return 受影响行数。大于0调整工资成功，否则调整工资失败
     */
    @Override
    public int adjustSalary(Integer wid, Integer workerSalary) {
        return workerMapper.adjustSalary(wid,workerSalary);
    }

    //减工资
    @Override
    public int reduceSalary(Integer wid, Integer workerSalary) {
        return workerMapper.reduceSalary(wid,workerSalary);
    }


}
